perm filename FOO[UCI,SYS] blob sn#063586 filedate 1973-09-24 generic text, type T, neo UTF8

	1) ILISP.MAC vs. 2) UCILSP.MAC	SRCCOM	09-24-73	21:15	PAGES 1,1

******** ILISP.MAC **** PAGE 1
1)	00100	TITLE ILISP INTERPRETER
1)	00150	TWOSEG
*** UCILSP.MAC *** PAGE 1
2)	00200	TITLE LISP INTERPRETER
2)	00300	TWOSEG


******** ILISP.MAC **** PAGE 1
1)	00300	IFNDEF SYSPRG,<SYSPRG==0
*** UCILSP.MAC *** PAGE 1
2)	00550	SYSPRG==654351	;***
2)	00575	SYSPN==6744	;***
2)	00600	IFNDEF SYSPRG,<SYSPRG==0


******** ILISP.MAC **** PAGE 1
1)	01200	DEFINE SYSNAM <SIXBIT /ILISP2/>				;	*** MJC
1)	01300	;accumulator definitions
*** UCILSP.MAC *** PAGE 1
2)	02100	DEFINE SYSNAM <SIXBIT /LISP/>
2)	02300	;accumulator definitions


******** ILISP.MAC **** PAGE 1
1)	08800	;	CAME	0,STNIL	;$$UNBIND STACK IF REGS LOOK OK		*** MJC
1)	08850	;	JRST	GETHGH	;GO GET HIGH SEGMENT			*** MJC
1)	08900	;	MOVE	B,SC2						*** MJC
1)	08950	;	PUSHJ	P,UBD	;$$UNBIND STACK				*** MJC
1)	09000	;	JRST STRT	;go to re-allocator			*** MJC
1)	09050	;GETHGH:	CALLI	RESET					*** MJC
1)	09100	;	MOVSI	A,1						*** MJC
1)	09150	;IFE STANSW,<	CALLI	A,CORE	;ELIMINATE ANY OLD HIGH SEGS.	*** MJC
1)	09200	;	HALT >							*** MJC
1)	09250	;***   IFN STANSW,<	CALLI A,400015
*** UCILSP.MAC *** PAGE 1
2)	17300		CAME	0,STNIL	;$$UNBIND STACK IF REGS LOOK OK
2)	17400		JRST	GETHGH	;GO GET HIGH SEGMENT
2)	17500		MOVE	B,SC2
2)	17600		PUSHJ	P,UBD	;$$UNBIND STACK
2)	17700		JRST STRT	;go to re-allocator
2)	17800	GETHGH:	CALLI	RESET
2)	17900		MOVSI	A,1
2)	18000	IFE STANSW,<	CALLI	A,CORE		;ELIMINATE ANY OLD HIGH SEGS.
2)	18005		HALT >
2)	18010	;***   IFN STANSW,<	CALLI A,400015



	1) ILISP.MAC vs. 2) UCILSP.MAC	SRCCOM	09-24-73	21:15	PAGES 1,1

******** ILISP.MAC **** PAGE 1
1)	09500	       	MOVE	A,HGHDAT+1	; Get high segment name		*** MJC
1)	09550		CALLI	A,400016	; Attach to high seg if poss.	*** MJC
1)	09600		CAIN	A,4	; If err=4 (seg alrdy there) ok too	*** MJC
1)	09650		JRST	SGPROT		; Success!			*** MJC
1)	09750		CALLI	400017		; Detach stray segments.	*** MJC
1)	09800		MOVE	A,HGHDAT	; Get device name for OPEN.	*** MJC
1)	09850		MOVEM	A,INTDAT+1	; Move into parm list for OPEN.	*** MJC
1)	09900		OPEN	0,INTDAT  	; Init ch 0 to dump mode.	*** MJC
1)	09950		JRST	NOSEG		; Couldn't do it?		*** MJC
1)	10000		MOVE	A,SGPPPN	; Get ppn of high seg file.	*** MJC
1)	10050		MOVEM	A,HGHDAT+4	; Store for LOOKUP.		*** MJC
1)	10100		LOOKUP	0,HGHDAT+1	; Find file containing high seg	*** MJC
1)	10150		JRST	NOSEG		; No high seg file -- collapse	*** MJC
1)	10200		HLRE	A,HGHDAT+4	; Ppn was replaced by -length	*** MJC
1)	10250		MOVNS	A		; Fix up for CORE2.		*** MJC
1)	10300		CALLI	A,400015	; Grab core for high segment.	*** MJC
1)	10350		JRST	NOSEG		; Can't get it?			*** MJC
1)	10400		MOVE	A,HGHDAT+1	; Name the high segment.	*** MJC
1)	10450		CALLI	A,400036	; SEGNM2 uuo.			*** MJC
1)	10500		JRST	NOSEG		; Pretty weird.			*** MJC
1)	10550		MOVEI	A,SHRST-1	; For dump mode input.		*** MJC
1)	10600		HRRM	A,HGHDAT+4	;				*** MJC
1)	10650		INPUT	0,HGHDAT+4	; Fill high seg with goodies.	*** MJC
1)	10700		CLOSE	0,1		; Destroy fingerprints.		*** MJC
1)	10750	SGPROT:	MOVEI	A,DEBUGO	;SET THE REE ADDRESS
1)	10800		HRRM	A,JOBREN
1)	10850		MOVE	A,HGHDAT+1	; Decide whether or not to 	*** MJC
1)	10900		CAME	A,[SYSNAM]	;   protect segment.		*** MJC
1)	10950		JRST	STRT		; Segment was not system's	*** MJC
1)	11000		CALLI	36		; Write-protect segment.	*** MJC
1)	11050		HALT			; rather than turn him loose.	*** MJC
1)	11100		JRST	STRT		;GO TO ALLOCATE STORAGE
1)	11150	NOSEG:	OUTSTR	[ASCIZ/CAN'T GET HIGH SEGMENT!/] ;		*** MJC
1)	11200		HALT					;		*** MJC
1)	11250	HGHDAT:	SYSDEV			; All used by LOOKUP and ENTER	*** MJC
1)	11300		SYSNAM			; High segment job & file name	*** MJC
1)	11350		0			; High seg file extension.	*** MJC
1)	11400		0	
1)	11450		0			; PRG,PPN of high seg file.	*** MJC
1)	11500					; Also file length after LOOKUP	*** MJC
1)	11550					; Used as dump wd cmd list.	*** MJC
1)	11600		0
1)	11650	INTDAT:	17			; Data mode.			*** MJC
1)	11700		SYSDEV			; Dev name (defd before OPEN)	*** MJC
1)	11750		0			; Buffer indicators (none)	*** MJC
1)	11800	SGPPPN:	XWD	SYSPRG,SYSPN	; High seg file area		*** MJC
1)	11850	PATCHL:	BLOCK	20

	1) ILISP.MAC vs. 2) UCILSP.MAC	SRCCOM	09-24-73	21:15	PAGES 1,1

1)	11900	 >
1)	12050	DDT:	SETOM	ERINT	;$$SET CONTROL H WITHOUT GOING THRU REE
*** UCILSP.MAC *** PAGE 1
2)	18500		MOVEI	A,DEBUGO	;SET THE REE ADDRESS
2)	18600		HRRM	A,JOBREN
2)	18700		JRST	STRT		;GO TO ALLOCATE STORAGE
2)	18800	HGHDAT:	SYSDEV
2)	18900		SYSNAM
2)	19000		0
2)	19100		0
2)	19200		XWD	SYSPRG,SYSPN
2)	19300		0>
2)	19600	DDT:	SETOM	ERINT	;$$SET CONTROL H WITHOUT GOING THRU REE


******** ILISP.MAC **** PAGE 12
1)	27700	NAME:	SIXBIT/ILISP/
1)	27750		0
*** UCILSP.MAC *** PAGE 12
2)	55400	NAME:	SYSNAM
2)	55500		0


******** ILISP.MAC **** PAGE 12
1)	33150		CAME	A,[SYSNAM]	;				*** MJC
1)	33200	; We're not allowing him to name his segment the same as ours,	*** MJC
1)	33250	;   since that causes problems for ATTSEG, so test for it.	*** MJC
1)	33300		JRST	GUDSEG	;					*** MJC
1)	33350		MOVE	B,[SYSDEV]	; But if he's a system hacker	*** MJC
1)	33400		CAME	B,DEV		;   then we let him get away	*** MJC
1)	33450		JRST	BADSEG		;   with it.			*** MJC
1)	33500	GUDSEG:	MOVEM	A,HGHDAT+1	;SAVE THE FILE NAME
1)	33550		MOVE	A,DEV		;GET THE DEVICE AND SAVE IT
1)	33600		MOVEM	A,HGHDAT
1)	33650		MOVEM	A,INTDAT+1	; Save it for OPEN, too.	*** MJC
1)	33700		MOVE	A,PPN		;GET THE PPN AND SAVE IT
1)	33750		MOVEM	A,SGPPPN	;				*** MJC
1)	33800		MOVEM	A,HGHDAT+4
1)	33850		SKIPN	A,EXT		; Get extension and save it.	*** MJC
1)	33900		MOVE	A,[SIXBIT/SEG/]	; No ext -- use SEG instead.	*** MJC
1)	33950		MOVEM	A,HGHDAT+2	; Move ext into OPEN stuff.	*** MJC
1)	34000		OPEN	0,INTDAT  	; Open for dump output.		*** MJC
1)	34050		JRST	BADSEG		; Couldn't open?		*** MJC
1)	34100		ENTER	0,HGHDAT+1	; Hookup to file.		*** MJC
1)	34150		JRST	BADSEG		; Couldn't do it?		*** MJC
1)	34200		CALLI	A,400022	; Find size of high segment.	*** MJC
1)	34250		MOVNS	A		; Construct dump mode cmd wd.	*** MJC
1)	34300		HRLM	A,HGHDAT+4	; I.e. -length to left half	*** MJC

	1) ILISP.MAC vs. 2) UCILSP.MAC	SRCCOM	09-24-73	21:15	PAGES 12,12

1)	34350		MOVEI	A,SHRST-1	;   and <start>-1 to rt half.	*** MJC
1)	34400		HRRM	A,HGHDAT+4	;				*** MJC
1)	34450		OUTPUT	0,HGHDAT+4	;				*** MJC
1)	34500		CLOSE	0,2		; Leave no traces		*** MJC
1)	34550		JRST	FALSE		;RETURN NIL
1)	34600	BADSEG:	ERR1	[SIXBIT/ILLEGAL NAME FOR SEGMENT!/] ;		*** MJC
1)	34650		JRST	FALSE	;					*** MJC
1)	34750	REMOTE<WRTSTS: 1>
*** UCILSP.MAC *** PAGE 12
2)	66100		MOVEM	A,HGHDAT+1	;SAVE THE FILE NAME
2)	66200		MOVE	A,DEV		;GET THE DEVICE AND SAVE IT
2)	66300		MOVEM	A,HGHDAT
2)	66400		MOVE	A,PPN		;GET THE PPN AND SAVE IT
2)	66500		MOVEM	A,HGHDAT+4
2)	66600		JRST	FALSE		;RETURN NIL
2)	66800	REMOTE<WRTSTS: 1>